package com.tiancheng.trade.authserver.service;

import com.tiancheng.trade.authserver.dto.AccessTokenRequestDTO;
import com.tiancheng.trade.authserver.dto.AccessTokenResponseDTO;
import com.tiancheng.trade.authserver.dto.Oauth2AuthorizationRequestDTO;
import com.tiancheng.trade.authserver.dto.Oauth2AuthorizationResult;
import com.tiancheng.trade.authserver.vo.UserLogInResultVO;
import com.tiancheng.trade.authserver.vo.UserLoginInVO;

public interface IAuthOauth2Service {
    /**
     * 获取oauth2 授权码
     *
     * @param applicationInfo  应用程序信息
     * @param userInfo         用户登陆信息
     * @param checkCertificate 校验用户凭证
     * @return 返回 oauth2 授权码
     */
    Oauth2AuthorizationResult oauth2Authorization(Oauth2AuthorizationRequestDTO applicationInfo, UserLoginInVO userInfo, boolean checkCertificate);


    /**
     * oauth2授权码换取access token
     */
    AccessTokenResponseDTO getOauthAccessToken(AccessTokenRequestDTO param);

    /**
     * 使用oauth2 access token换取用户信息
     */
    UserLogInResultVO oauth2UserInfo(String authorization);

    UserLogInResultVO oauth2UserInfoByCode(String code);
}
